Skip to content

Improve support for WP 6.9#2467

Merged
Crabcyborg merged 2 commits into
masterfrom
improve_support_for_wp_6.9
Aug 20, 2025
Merged

Improve support for WP 6.9#2467
Crabcyborg merged 2 commits into
masterfrom
improve_support_for_wp_6.9

Conversation

@Crabcyborg

Copy link
Copy Markdown
Contributor

It looks like the function has a new name in WP 6.9.

This update calls the new function instead of the deprecated one if it is callable.

@coderabbitai

coderabbitai Bot commented Aug 20, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Introduces FrmAppHelper::is_valid_utf8($string), delegating to wp_is_valid_utf8 or seems_utf8 when available. Updates FrmXMLHelper::cdata to use the new helper for UTF-8 checks. No other logic or interfaces changed.

Changes

Cohort / File(s) Summary
UTF-8 validation helper
classes/helpers/FrmAppHelper.php
Added public static method is_valid_utf8($string) that uses wp_is_valid_utf8 if available, else seems_utf8, else returns false.
XML CDATA UTF-8 check refactor
classes/helpers/FrmXMLHelper.php
Replaced direct seems_utf8 check in cdata with FrmAppHelper::is_valid_utf8, preserving existing CDATA/encoding behavior.

Sequence Diagram(s)

sequenceDiagram
  participant Caller as FrmXMLHelper::cdata
  participant Helper as FrmAppHelper
  participant WP as WordPress Core

  Caller->>Helper: is_valid_utf8(str)
  alt WP >= 6.9 provides wp_is_valid_utf8
    Helper->>WP: wp_is_valid_utf8(str)
    WP-->>Helper: bool
  else WP has seems_utf8
    Helper->>WP: seems_utf8(str)
    WP-->>Helper: bool
  else No WP validation available
    Helper-->>Caller: false
  end

  Helper-->>Caller: is_valid(bool)
  alt not valid UTF-8
    Caller->>Caller: utf8_encode(str)
    Caller->>Caller: wrap in CDATA
  else valid UTF-8 or numeric
    Caller->>Caller: wrap/return as existing logic
  end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 PHPStan (2.1.17)

Note: Using configuration file /phpstan.neon.
Invalid configuration:
Unexpected item 'parameters › strictRules'.

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch improve_support_for_wp_6.9

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
classes/helpers/FrmAppHelper.php (2)

4603-4610: Replace placeholder @SInCE with the actual plugin version

The docblock still uses a placeholder. Use the plugin's current version (looks like 6.23 from self::$plug_version) or whatever version will ship this change.

-	 * @since x.x
+	 * @since 6.23

4611-4621: Consider adding a final UTF-8 check fallback (mb_check_encoding) instead of returning false

On very old WP installs where neither wp_is_valid_utf8 nor seems_utf8 exists (unlikely, but possible), this returns false and forces a conversion attempt downstream. A lightweight safety net is to fall back to mb_check_encoding when available. Also casting to string keeps behavior predictable across scalars.

 	public static function is_valid_utf8( $string ) {
 		// wp_is_valid_utf8 is added in WP 6.9.
 		if ( function_exists( 'wp_is_valid_utf8' ) ) {
-			return wp_is_valid_utf8( $string );
+			return wp_is_valid_utf8( (string) $string );
 		}
 		// As of WP 6.9, seems_utf8 is deprecated.
 		if ( function_exists( 'seems_utf8' ) ) {
-			return seems_utf8( $string );
+			return seems_utf8( (string) $string );
 		}
+		// Fallback for environments without either function.
+		if ( function_exists( 'mb_check_encoding' ) ) {
+			return mb_check_encoding( (string) $string, 'UTF-8' );
+		}
 		return false;
 	}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between eb5e404 and 5d9c24c.

📒 Files selected for processing (2)
  • classes/helpers/FrmAppHelper.php (1 hunks)
  • classes/helpers/FrmXMLHelper.php (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
classes/helpers/FrmXMLHelper.php (1)
classes/helpers/FrmAppHelper.php (2)
  • FrmAppHelper (6-4622)
  • is_valid_utf8 (4611-4621)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Cypress
  • GitHub Check: PHP 8 tests in WP trunk
  • GitHub Check: PHP 7.4 tests in WP trunk
🔇 Additional comments (2)
classes/helpers/FrmXMLHelper.php (2)

1709-1712: Good centralization: use FrmAppHelper::is_valid_utf8 instead of seems_utf8

This aligns with WP 6.9 (wp_is_valid_utf8) while retaining backward compatibility via the helper. Logic remains consistent with the previous check.


1709-1712: All direct seems_utf8 calls are confined to FrmAppHelper

The ripgrep search shows the only remaining call to seems_utf8 lives in classes/helpers/FrmAppHelper.php (lines 4617–4618), where is_valid_utf8() falls back to it if available. No other direct uses of seems_utf8 exist in the codebase, so all UTF-8 validations correctly route through FrmAppHelper::is_valid_utf8.

@Crabcyborg
Crabcyborg merged commit a919540 into master Aug 20, 2025
15 of 17 checks passed
@Crabcyborg
Crabcyborg deleted the improve_support_for_wp_6.9 branch August 20, 2025 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant